#pragma once

#include <stdio.h>
#include <iostream>
#include <fstream>
#include <list>
#include <string>
#include <map>

#include "XmlAttribute.h"
#include "XMLElement.h"
#include "Parser.h"
#include "LogFactory.h"
#include "XmlGrammar.h"
#include "XmlSintaxException.h"
#include "XmlSemanticException.h"
#include "InitializationException.h"
#include "NoSuchXmlElementException.h"
#include "DomValidator.h"
#include "ElementDao.h"
#include "Element.h"
#include "Texture.h"
#include "DomainModelCreator.h"

class Zuma {
	
public:

	Zuma();
	~Zuma();

	Log* logger;
	/*
	 * Lee la configuracion del juego. Recibe como parametro el nombre del archivo de configuracion. El mismo debe respetar
	 * la especificacion del archivo establecida por la catedra. Una vez leido, parseado y validado el archivo, se configuran
	 * los objetos de dominio.
	 */
	void initialize(string configFileName);
	
	/*
	 * Imprime en la consola la informacion de los elementos cuyo tag coincide con el recibido por parametro
	 */
	void showElementByTag(string tag);

	/*
	 * Imprime en la consola la informacion del elemento cuyo id coincide con el recibido por parametro
	 */
	void showElementById(string id);

private:

	XMLElement* root;
	XMLElement* readConfiguration(string);

};
